package modulo1.cdp;

import java.util.List;
import javax.persistence.*;

@Entity
public class Disciplina extends Objeto {

    private String ementa;
    private String nome;
    private String abreviacao;
    private Integer periodo;
    private Integer cargaHoraria;
    private char obrigatoriedade;
    //private List<Turma> listaDeTurma;
    @JoinColumn(name = "id_curso", referencedColumnName = "id", nullable = false)
    @ManyToOne(fetch = FetchType.LAZY)
    private Curso curso;
    @ManyToMany
    @JoinTable(name = "disciplina_prerequisito",
    joinColumns =
    @JoinColumn(name = "disciplina"),
    inverseJoinColumns =
    @JoinColumn(name = "prerequisito"))
    private List<Disciplina> prerequisitos;

    @Override
    public String toString() {
        return "Disciplina{id=" + id + ", nome=" + nome + ", ementa=" + ementa + ", abreviacao=" + abreviacao + ", periodo=" + periodo + ", cargaHoraria=" + cargaHoraria + ", obrigatoriedade=" + obrigatoriedade;
    }

    public List<Disciplina> getPrerequisitos() {
        return prerequisitos;
    }

    public void setPrerequisitos(List<Disciplina> prerequisitos) {
        this.prerequisitos = prerequisitos;
    }

    public String getEmenta() {
        return ementa;
    }

    public void setEmenta(String ementa) {
        this.ementa = ementa;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getAbreviacao() {
        return abreviacao;
    }

    public void setAbreviacao(String abreviacao) {
        this.abreviacao = abreviacao;
    }

    public Integer getPeriodo() {
        return periodo;
    }

    public void setPeriodo(Integer periodo) {
        this.periodo = periodo;
    }

    public Integer getCargaHoraria() {
        return cargaHoraria;
    }

    public void setCargaHoraria(Integer cargaHoraria) {
        this.cargaHoraria = cargaHoraria;
    }

    public char getObrigatoriedade() {
        return obrigatoriedade;
    }

    public void setObrigatoriedade(char obrigatoriedade) {
        this.obrigatoriedade = obrigatoriedade;
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso idCurso) {
        this.curso = idCurso;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Disciplina)) {
            return false;
        }
        Disciplina other = (Disciplina) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    public Disciplina() {
    }
}
